package com.cmj.dao;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.cmj.domain.entity.Article;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import org.apache.ibatis.annotations.Update;

import java.util.List;

/**
 * 文章表(Article)表数据库访问层
 *
 * @author makejava
 * @since 2022-03-12 16:41:47
 */
@Mapper
public interface ArticleMapper extends BaseMapper<Article> {

    /***
     * 查询正常发布的文章（status=0) 按浏览量降序排列 取前10条
     * @param status 状态码（是否正常发布文章）
     * @return 查询到正常发布的文章列表
     */
    @Select("select * from cmj_article where status = #{status} order by view_count desc limit 10")
    List<Article> selHotArticleList(Integer status);

    /***
     * 查询文章列表 正式发布文章 置顶文章显示在前面
     * @return 文章列表
     * @param categoryId 分类id
     * @param status 文章状态
     */
    List<Article> selArticleList(@Param("categoryId") Long categoryId, @Param("status") int status);


    /***
     * 文章详情
     * @param id 文章id
     * @return 文章详情
     */
    @Select("select * from cmj_article where id = #{id}")
    Article selArticleById(Long id);

    /**
     * 从redis同步浏览量到数据
     * @param id 文章id
     * @param view 浏览量
     */
    @Update("update cmj_article set view_count = #{view} where id = #{id}")
    void updateView(@Param("id") Long id, @Param("view") Integer view);
}

